package hashset04;

import java.util.HashSet;
/**
 *  HashSet保证元素唯一的原理:
 *     如果新添加的元素与集合中已有的元素哈希值均不相同 =>存
 *     如果新添加的元素与集合中已有的元素哈希值相同
 *          此时再去比较equals => 一旦有equals相同 =>不存
 *                           => 与equals比较均不相同=>存
 */
public class HashSetDemo01 {
    public static void main(String[] args) {
        Person p1 = new Person("张三", 12);
        Person p2 = new Person("张三", 12);
        Person p3 = new Person("李四", 15);

        /**
         * 第一次存入p1,HashSet为空,直接存入
         * 第二次存入p2, p1.hashCode()和 p2.hashCode()比较相同
         *     再去比较equals =>p2.equals(p1)=>比较的是各个属性值=>equals返回true=>不存
         * 第三次
         *  1.存入的p3先和p1比较
         *     p3.hashCode()和 p1.hashCode()比较不同=>直接存入
         */
        HashSet<Person> hs = new HashSet<>();
        hs.add(p1);
        hs.add(p2);
        hs.add(p3);

        System.out.println(hs);
    }
}
